<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Periodo extends MN_Controller {

    function __construct() {
        parent::__construct();
        $this->load->database();
        $this->load->helper(array('url', 'form'));
        $this->load->library('ion_auth');
        $this->load->library('session');
        $this->load->model('Institucion_Model');
        $this->load->model('Periodos_Model');
    }

    public function index() {

      if (!$this->ion_auth->logged_in() || (!$this->ion_auth->is_admin() && !$this->ion_auth->is_secretary())  ) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');
            redirect('auth/login', 'refresh');
        }
        $this->data['user'] = $this->ion_auth->get_user_username();
    }

    public function inicio() {
      if (!$this->ion_auth->logged_in() || (!$this->ion_auth->is_admin() && !$this->ion_auth->is_secretary())  ) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');
            redirect('auth/login', 'refresh');
        }
        $this->data['user'] = $this->ion_auth->get_user_username();
        
        $this->data['periodos'] = $this->Periodos_Model->getListado();
        $this->_render('periodos/start');
    }

    public function crear() {
      if (!$this->ion_auth->logged_in() || (!$this->ion_auth->is_admin() && !$this->ion_auth->is_secretary())  ) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');
            redirect('auth/login', 'refresh');
        }
        $this->data['user'] = $this->ion_auth->get_user_username();
        
        $this->load->library('form_validation');
        $this->data['institucion'] = $this->Institucion_Model->getListado();
        //print_r($this->data['institucion']);
        $this->_render('periodos/new');

        //redirect('auth', 'refresh');
    }

    public function actualizar() {
      if (!$this->ion_auth->logged_in() || (!$this->ion_auth->is_admin() && !$this->ion_auth->is_secretary())  ) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');
            redirect('auth/login', 'refresh');
        }
        $this->data['user'] = $this->ion_auth->get_user_username();
        
        $this->load->helper(array('url', 'form'));
        $this->load->library('form_validation');
        $this->data['institucion'] = $this->Institucion_Model->getListado();

        //$this->data['institucion']=$this->Institucion_Model->getDatosInstitucion($ide);
        $opc = $this->uri->segment(3);
        $ide = $this->uri->segment(4);
        if (!isset($_POST['txtdes'])) {
            $this->data['periodo'] = $this->Periodos_Model->getDatosPeriodo($ide);
            $this->data['opc'] = $opc;
            $this->_render('periodos/update');
        } else {
            $ide = $this->input->post('txtide');
            $opc = $this->input->post('txtopc');
            $this->data['periodo'] = $this->Periodos_Model->getDatosPeriodo($ide);
            $this->data['opc'] = $opc;

            $this->form_validation->set_rules('txtdes', 'Descripcion del Periodo', 'required|trim');
            $this->form_validation->set_rules('dateini', 'Fecha de Inicio del Periodo', 'required|trim');
            $this->form_validation->set_rules('datefin', 'Fecha de Finalizacion del Periodo', 'required|trim');
            $this->form_validation->set_rules('dateiord', 'Fecha de Inicio de Matriculas Ordinarias', 'required|trim');
            $this->form_validation->set_rules('dateford', 'Fecha de Finalizacion de Matriculas Ordinarias', 'trim|required');
            $this->form_validation->set_rules('dateiext', 'Fecha de Inicio de Matriculas Extraordinarias', 'trim|required');
            $this->form_validation->set_rules('datefext', 'Fecha de Finalizacion de Matriculas Extraordinarias', 'trim|required');
            $this->form_validation->set_rules('costo_lec', 'Costo del Semestre', 'trim|required');
            $this->form_validation->set_rules('cost_materi_lec', 'Matricula por Materias', 'trim|required');
            $this->form_validation->set_rules('cost_teor_lec', 'Costo de Materias Toericas', 'trim|required');
            $this->form_validation->set_rules('cost_pract_lec', 'Costo de Materias Practicas ', 'trim|required');
            $this->form_validation->set_rules('costo_inscrip_lec', 'Costo de la Inscripcion', 'trim|required');

            $this->form_validation->set_rules('dateex1ba', 'Fecha de Entrega de Examenes del primer Bimestre', 'trim|required');
            $this->form_validation->set_rules('dateex1bb', 'Fecha de Entrega de Examenes del primer Bimestre(B)', 'trim|required');
            $this->form_validation->set_rules('dateex2ba', 'Fecha de Entrega de Examenes del segundo Bimestre', 'trim|required');
            $this->form_validation->set_rules('dateex2bb', 'Fecha de Entrega de Examenes del segundo Bimestre(B)', 'trim|required');
            $this->form_validation->set_rules('datesuplea', 'Fecha de Entrega de Examenes Supletorios', 'trim|required');
            $this->form_validation->set_rules('datesupleb', 'Fecha de Entrega de Examenes Supletorios(B)', 'trim|required');
            $this->data['institucion'] = $this->Institucion_Model->getListado();

            if (($this->form_validation->run() == FALSE)) {
                $this->_render('periodos/update');
                //redirect("institucion/actualizar/".$opc."/".$ide);
            } else {

                $error_fecha = FALSE;

                $fechas = array(
                    "fecha_inicio_lec" => strtotime($this->input->post('dateini'), 0),
                    "fecha_fin_lec" => strtotime($this->input->post('datefin'), 0),
                    "finiciomatricula_lec" => strtotime($this->input->post('dateiord'), 0),
                    "ffinmatricula_lec" => strtotime($this->input->post('dateford'), 0),
                    "finicioextraordinaria_lec" => strtotime($this->input->post('dateiext'), 0),
                    "ffinextraordinaria_lec" => strtotime($this->input->post('datefext'), 0),
                    "fnotasprimera_lec" => strtotime($this->input->post('dateex1ba'), 0),
                    "fnotasprimerb_lec" => strtotime($this->input->post('dateex1bb'), 0),
                    "fnotassegundoa_lec" => strtotime($this->input->post('dateex2ba'), 0),
                    "fnotassegundob_lec" => strtotime($this->input->post('dateex2bb'), 0),
                    "fnotassupletorioa_lec" => strtotime($this->input->post('datesuplea'), 0),
                    "fnotassupletoriob_lec" => strtotime($this->input->post('datesupleb'), 0));

                //echo ("fecha supletorios :" . $fechas["fnotassupletorioa_lec"] . " ... " . $this->input->post('datesuplea'));
                // echo ($fechas["fecha_fin_lec"] . " --- " . $fechas["fecha_inicio_lec"] );
                //print_r($fechas);

                if ($fechas["fecha_fin_lec"] > $fechas["fecha_inicio_lec"]) {
                    $error_fecha = FALSE;

                    foreach ($fechas as $i => $row) {
                        if ($this->check_in_range($fechas["fecha_inicio_lec"], $fechas["fecha_fin_lec"], $fechas[$i])) {
                            $error_fecha = FALSE;
                            //echo "estas en rango";
                        } else {
                            $this->data["msj_error"] = "Las fechas de matriculas o examenes no pertenecen al periodo";
                            //echo "fuera de rango";
                            $error_fecha = TRUE;
                            break;
                        }
                    }
                    if (!$error_fecha) {
                        $error_fecha = $this->check_date($fechas);
                    }
                } else {

                    $error_fecha = TRUE;
                    $this->data["msj_error"] = "La fecha de Finalizacion debe ser mayor al de Inicio";
                }


                if (!$error_fecha) {
                    $periodo = array(
                        "institucion_ide_inst" => $this->input->post('ide_inst'),
                        "fecha_inicio_lec" => date("Y-m-d", $fechas["fecha_inicio_lec"]),
                        "fecha_fin_lec" => date("Y-m-d", $fechas["fecha_fin_lec"]),
                        "estado_lec" => $this->input->post('estado'),
                        "descripcion_lec" => $this->input->post('txtdes'),
                        "fnotasprimera_lec" => date("Y-m-d", $fechas["fnotasprimera_lec"]),
                        "fnotasprimerb_lec" => date("Y-m-d", $fechas["fnotasprimerb_lec"]),
                        "fnotassegundoa_lec" => date("Y-m-d", $fechas["fnotassegundoa_lec"]),
                        "fnotassegundob_lec" => date("Y-m-d", $fechas["fnotassegundob_lec"]),
                        "fnotassupletorioa_lec" => date("Y-m-d", $fechas["fnotassupletorioa_lec"]),
                        "fnotassupletoriob_lec" => date("Y-m-d", $fechas["fnotassupletoriob_lec"]),
                        "finiciomatricula_lec" => date("Y-m-d", $fechas["finiciomatricula_lec"]),
                        "ffinmatricula_lec" => date("Y-m-d", $fechas["ffinmatricula_lec"]),
                        "finicioextraordinaria_lec" => date("Y-m-d", $fechas["finicioextraordinaria_lec"]),
                        "ffinextraordinaria_lec" => date("Y-m-d", $fechas["ffinextraordinaria_lec"]),
                        "regimen_lec" => $this->input->post('regimen'),
                        "costo_lec" => $this->input->post('costo_lec'),
                        "cost_materi_lec" => $this->input->post('cost_materi_lec'),
                        "cost_teor_lec" => $this->input->post('cost_teor_lec'),
                        "cost_pract_lec" => $this->input->post('cost_pract_lec'),
                        "costo_inscrip_lec" => $this->input->post('costo_inscrip_lec'),
                        "costo_inscrip_conv_lec" => $this->input->post('costo_inscrip_conv_lec'),
                        "hoja_valor_lec" => $this->input->post('hoja_valor_lec'));

                    if ($opc == 'upd'){
                        $this->Periodos_Model->actualizarPeriodo($periodo, $ide);
                        redirect('periodo/inicio');
                    }
                        
                    else{
                        $msj_del="";
                        if ($this->Periodos_Model->ExisteActividadDistributivo($ide)){
                           $msj_del = "<span>NO SE PUEDE ELIMINAR ESTE PERIODO, TIENE CREADO UN DISTRIBUTIVO</span>";
                        }
                        if ($this->Periodos_Model->ExisteActividadMatriculas($ide)){
                          $msj_del = $msj_del. "<BR/><span>NO SE PUEDE ELIMINAR  ESTE PERIODO, TIENE ASIGNADAS MATRICULAS</span>";
                        }
                        if(empty($msj_del)){
                            $this->Periodos_Model->eliminarPeriodo($ide);
                            redirect('periodo/inicio');
                        }else{
                            $this->data['msj_del']=$msj_del;
                            $this->data['tit_del']="ELIMINACION DE PERIODO LECTIVO";
                            $this->data['volver']="periodo/inicio";
                            
                            $this->_render('template/msj_error');
                            
                        }
                            
                        
                    }
                    //print_r($periodo);
                    
                } else {
                    $this->_render('periodos/update');
                    //echo ("error en fechas del periodo");
                }
            }
        }
    }

    function presearch() {
      if (!$this->ion_auth->logged_in() || (!$this->ion_auth->is_admin() && !$this->ion_auth->is_secretary())  ) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');
            redirect('auth/login', 'refresh');
        }
        $this->data['user'] = $this->ion_auth->get_user_username();
        
        $who = $this->input->post('txtsearch');

        if (empty($who))
            redirect("periodo/inicio");
        else {
            $this->data['periodos'] = $this->Periodos_Model->getBusquedaPeriodo($who);
            $this->_render('periodos/start');
        }
    }

    public function ingresodatos() {
      if (!$this->ion_auth->logged_in() || (!$this->ion_auth->is_admin() && !$this->ion_auth->is_secretary())  ) {
            $this->session->set_flashdata('message', 'No pertence al grupo de Docentes');
            redirect('auth/login', 'refresh');
        }


        $this->load->library('form_validation');
        $this->form_validation->set_rules('txtdes', 'Descripcion del Periodo', 'required|trim');
        $this->form_validation->set_rules('dateini', 'Fecha de Inicio del Periodo', 'required|trim');
        $this->form_validation->set_rules('datefin', 'Fecha de Finalizacion del Periodo', 'required|trim');
        $this->form_validation->set_rules('dateiord', 'Fecha de Inicio de Matriculas Ordinarias', 'required|trim');
        $this->form_validation->set_rules('dateford', 'Fecha de Finalizacion de Matriculas Ordinarias', 'trim|required');
        $this->form_validation->set_rules('dateiext', 'Fecha de Inicio de Matriculas Extraordinarias', 'trim|required');
        $this->form_validation->set_rules('datefext', 'Fecha de Finalizacion de Matriculas Extraordinarias', 'trim|required');
        $this->form_validation->set_rules('costo_lec', 'Costo del Semestre', 'trim|required');
        $this->form_validation->set_rules('cost_materi_lec', 'Matricula por Materias', 'trim|required');
        $this->form_validation->set_rules('cost_teor_lec', 'Costo de Materias Toericas', 'trim|required');
        $this->form_validation->set_rules('cost_pract_lec', 'Costo de Materias Practicas ', 'trim|required');
        $this->form_validation->set_rules('costo_inscrip_lec', 'Costo de la Inscripcion', 'trim|required');

        $this->form_validation->set_rules('dateex1ba', 'Fecha de Entrega de Examenes del primer Bimestre', 'trim|required');
        $this->form_validation->set_rules('dateex1bb', 'Fecha de Entrega de Examenes del primer Bimestre(B)', 'trim|required');
        $this->form_validation->set_rules('dateex2ba', 'Fecha de Entrega de Examenes del segundo Bimestre', 'trim|required');
        $this->form_validation->set_rules('dateex2bb', 'Fecha de Entrega de Examenes del segundo Bimestre(B)', 'trim|required');
        $this->form_validation->set_rules('datesuplea', 'Fecha de Entrega de Examenes Supletorios', 'trim|required');
        $this->form_validation->set_rules('datesupleb', 'Fecha de Entrega de Examenes Supletorios(B)', 'trim|required');
        $this->data['institucion'] = $this->Institucion_Model->getListado();

        if (($this->form_validation->run() == FALSE)) {

            $this->_render('periodos/new');
        } else {
            $error_fecha = FALSE;

            $fechas = array(
                "fecha_inicio_lec" => strtotime($this->input->post('dateini'), 0),
                "fecha_fin_lec" => strtotime($this->input->post('datefin'), 0),
                "finiciomatricula_lec" => strtotime($this->input->post('dateiord'), 0),
                "ffinmatricula_lec" => strtotime($this->input->post('dateford'), 0),
                "finicioextraordinaria_lec" => strtotime($this->input->post('dateiext'), 0),
                "ffinextraordinaria_lec" => strtotime($this->input->post('datefext'), 0),
                "fnotasprimera_lec" => strtotime($this->input->post('dateex1ba'), 0),
                "fnotasprimerb_lec" => strtotime($this->input->post('dateex1bb'), 0),
                "fnotassegundoa_lec" => strtotime($this->input->post('dateex2ba'), 0),
                "fnotassegundob_lec" => strtotime($this->input->post('dateex2bb'), 0),
                "fnotassupletorioa_lec" => strtotime($this->input->post('datesuplea'), 0),
                "fnotassupletoriob_lec" => strtotime($this->input->post('datesupleb'), 0));

            // echo ($fechas["fecha_fin_lec"] . " --- " . $fechas["fecha_inicio_lec"] );

            if ($fechas["fecha_fin_lec"] > $fechas["fecha_inicio_lec"]) {
                $error_fecha = FALSE;

                foreach ($fechas as $i => $row) {
                    if ($this->check_in_range($fechas["fecha_inicio_lec"], $fechas["fecha_fin_lec"], $fechas[$i])) {
                        $error_fecha = FALSE;
                        //echo "estas en rango";
                    } else {
                        $this->data["msj_error"] = "Las fechas de matriculas o examenes no pertenecen al periodo";
                        //echo "fuera de rango";
                        $error_fecha = TRUE;
                        break;
                    }
                }
                if (!$error_fecha) {
                    $error_fecha = $this->check_date($fechas);
                }
            } else {

                $error_fecha = TRUE;
                $this->data["msj_error"] = "La fecha de Finalizacion debe ser mayor al de Inicio";
            }


            if (!$error_fecha) {
                $periodo = array(
                    "institucion_ide_inst" => $this->input->post('ide_inst'),
                    "fecha_inicio_lec" => date("Y-m-d", $fechas["fecha_inicio_lec"]),
                    "fecha_fin_lec" => date("Y-m-d", $fechas["fecha_fin_lec"]),
                    "estado_lec" => $this->input->post('estado'),
                    "descripcion_lec" => $this->input->post('txtdes'),
                    "fnotasprimera_lec" => date("Y-m-d", $fechas["fnotasprimera_lec"]),
                    "fnotasprimerb_lec" => date("Y-m-d", $fechas["fnotasprimerb_lec"]),
                    "fnotassegundoa_lec" => date("Y-m-d", $fechas["fnotassegundoa_lec"]),
                    "fnotassegundob_lec" => date("Y-m-d", $fechas["fnotassegundob_lec"]),
                    "fnotassupletorioa_lec" => date("Y-m-d", $fechas["fnotassupletorioa_lec"]),
                    "fnotassupletoriob_lec" => date("Y-m-d", $fechas["fnotassupletoriob_lec"]),
                    "finiciomatricula_lec" => date("Y-m-d", $fechas["finiciomatricula_lec"]),
                    "ffinmatricula_lec" => date("Y-m-d", $fechas["ffinmatricula_lec"]),
                    "finicioextraordinaria_lec" => date("Y-m-d", $fechas["finicioextraordinaria_lec"]),
                    "ffinextraordinaria_lec" => date("Y-m-d", $fechas["ffinextraordinaria_lec"]),
                    "regimen_lec" => $this->input->post('regimen'),
                    "costo_lec" => $this->input->post('costo_lec'),
                    "cost_materi_lec" => $this->input->post('cost_materi_lec'),
                    "cost_teor_lec" => $this->input->post('cost_teor_lec'),
                    "cost_pract_lec" => $this->input->post('cost_pract_lec'),
                    "costo_inscrip_lec" => $this->input->post('costo_inscrip_lec'),
                    "costo_inscrip_conv_lec" => $this->input->post('costo_inscrip_conv_lec'),
                    "hoja_valor_lec" => $this->input->post('hoja_valor_lec'),
                    );

                $this->Periodos_Model->grabarInstitucion($periodo);
                redirect('periodo/inicio');
            } else {
                $this->_render('periodos/new');
                //echo ("error en fechas del periodo");
            }
        }
    }

    function check_date($fechas) {
        
        $error = FALSE;
        if ($fechas["ffinmatricula_lec"] > $fechas["finiciomatricula_lec"]) {
            $error = FALSE;

            if ($fechas["finicioextraordinaria_lec"] > $fechas["ffinmatricula_lec"] && $fechas["ffinextraordinaria_lec"] > $fechas["finicioextraordinaria_lec"]) {
                $error = FALSE;
                if ($fechas["fnotasprimera_lec"] > $fechas["ffinextraordinaria_lec"] && $fechas["fnotasprimerb_lec"] > $fechas["ffinextraordinaria_lec"]) {
                    $error = FALSE;
                    if ($fechas["fnotassegundoa_lec"] > $fechas["fnotasprimera_lec"] && $fechas["fnotassegundob_lec"] > $fechas["fnotasprimera_lec"]) {
                        $error = FALSE;
                        if ($fechas["fnotassupletorioa_lec"] > $fechas["fnotassegundoa_lec"] && $fechas["fnotassupletoriob_lec"] > $fechas["fnotassegundoa_lec"]) {
                            $error = FALSE;
                        } else {
                            $this->data["msj_error"] = "Error en la fecha de entrega Notas de Supletorios";
                            //echo "fuera de rango";
                            $error = TRUE;
                        }
                    } else {
                        $this->data["msj_error"] = "Error en la fecha de entrega Notas Segundo Bimestre";
                        //echo "fuera de rango";
                        $error = TRUE;
                    }
                } else {
                    $this->data["msj_error"] = "Error en la fecha de entrega Notas Primer Bimestre";
                    //echo "fuera de rango";
                    $error = TRUE;
                }
            } else {
                $this->data["msj_error"] = "Error en el periodo de Matriculas ExtraOrdinarias";
                //echo "fuera de rango";
                $error = TRUE;
            }
        } else {
            $this->data["msj_error"] = "Error en el periodo de Matriculas Ordinarias";
            //echo "fuera de rango";
            $error = TRUE;
        }
        return ($error);
    }

    function check_in_range($start_date, $end_date, $evaluame) {
        return (($evaluame >= $start_date) && ($evaluame <= $end_date));
    }

}

/* End of file welcome.php */
    /* Location: ./application/controllers/welcome.php */


    